package util

import (
	"fmt"
	"os"
)

// IsExistAndCreateDir 创建文件夹
// path 文件夹存放地址
// @return bool 是否成功执行
// @return err 异常
func IsExistAndCreateDir(path string) (bool, error) {
	// 判断文件夹是否存在
	if _, err := os.Stat(path); os.IsNotExist(err) {
		// 创建文件夹，注意这里给的权限时777，可以将这个参数提取出来作为参数传入。
		if err := os.Mkdir(path, os.ModePerm); err != nil {
			return false, err
		} else {
			return true, nil
		}
	} else {
		return true, err
	}
}

// ComputeFileSize
// @Description: 文件大小与kb、mb转换
// @param fileSize 文件大小
// @return string 拼接后的显示文字
//
func ComputeFileSize(fileSize int64) string {
	if fileSize < 1024 {
		return fmt.Sprintf("%.2fB", float64(fileSize)/float64(1))
	} else if fileSize < (1024 * 1024) {
		return fmt.Sprintf("%.2fKB", float64(fileSize)/float64(1024))
	} else if fileSize < (1024 * 1024 * 1024) {
		return fmt.Sprintf("%.2fMB", float64(fileSize)/float64(1024*1024))
	} else if fileSize < (1024 * 1024 * 1024 * 1024) {
		return fmt.Sprintf("%.2fGB", float64(fileSize)/float64(1024*1024*1024))
	} else if fileSize < (1024 * 1024 * 1024 * 1024 * 1024) {
		return fmt.Sprintf("%.2fTB", float64(fileSize)/float64(1024*1024*1024*1024))
	} else {
		return fmt.Sprintf("%.2fEB", float64(fileSize)/float64(1024*1024*1024*1024*1024))
	}
}

// TextSubString
// @Description: 文件名称截取函数
// @param text 文本信息
// @param length 文本保留长度
// @return string 处理后的文件名称
func TextSubString(text string, length int) string {
	if len(text) > length {
		return text[0:length] + "..."
	} else {
		return text
	}
}
